
package oreilly.command.control;

import org.apache.log4j.Logger;

/**
 * 風扇的主體, 風扇應有開關, 且可以變換轉速,<br>
 * 可以想像在真實世界中的風扇,<br>
 * 此風扇可以想像成一般電風扇, 工業用風扇, 廁所用風扇, 甚至吃風機也可,<br>
 * 在這裏是以 <code>getName()</code> 來分辨風扇<br>
 * <br>
 * Copyright: Copyright (c) 2002-2007<br>
 * Company: E885 有限公司
 * 
 * @author Eric Gau(E-mail:gau168.gau@msa.hinet.net)
 * @version 1.0
 */
public class Fan
{
	/**
	 * 風扇關閉(也是屬於轉速的態度, 我們應該講轉速為 0 ), 想像真實世界風扇的關閉按鈕
	 */
	public static final int OFF = 0;

	/**
	 * 風扇的轉速為慢, 想像真實世界中風扇 3 的按鈕
	 */
	public static final int SLOW_SPEED = 1;

	/**
	 * 風扇的轉速為中, 想像真實世界中風扇 2 的按鈕
	 */
	public static final int MEDIUM_SPEED = 2;

	/**
	 * 風扇的轉速為快, 想像真實世界中風扇 1 的按鈕
	 */
	public static final int HIGH_SPEED = 3;

	/**
	 * 風扇的名稱, 如: 一般電風扇, 工業用電風扇, 廁所用風扇, 吹風機等等
	 */
	private String name;

	/**
	 * 風扇目前的速度
	 */
	private int speed;

	private Logger logger = Logger.getLogger( "e885" );

	/**
	 * constructor, 並為風扇取名, 將速度更換為 off 狀態
	 * 
	 * @param name 風扇名稱, 如: 一般電風扇, 工業用電風扇, 廁所用風扇, 吹風機等等
	 */
	public Fan( String name )
	{
		this.name = name;

		speed = OFF;
	}

	/**
	 * 取得風扇目前的速度
	 * 
	 * @return 電風扇目前的速度, 傳回值定義在 Fan class
	 */
	public int getSpeed()
	{
		return speed;
	}

	/**
	 * 將風扇轉為高速
	 */
	public void hight()
	{
		speed = HIGH_SPEED;

		logger.debug( name + " 速度為快速" );
	}

	/**
	 * 將風扇轉為中速
	 */
	public void medium()
	{
		speed = MEDIUM_SPEED;

		logger.debug( name + " 速度為中速" );
	}

	/**
	 * 將風扇轉為低速
	 */
	public void slow()
	{
		speed = SLOW_SPEED;

		logger.debug( name + " 速度為慢速" );
	}

	/**
	 * 將風扇關閉
	 */
	public void turnOff()
	{
		speed = OFF;

		logger.debug( name + " 關閉" );
	}
}
